package com.tianya.portal.blog.service.impl;

import com.tianya.common.web.core.domain.TreeNode;
import com.tianya.portal.blog.common.CacheConfiguration;
import com.tianya.portal.blog.constant.BlogConstant;
import com.tianya.portal.blog.domain.BlogNoteMenu;
import com.tianya.portal.blog.mapper.BlogNoteMenuMapper;
import com.tianya.portal.blog.service.IBlogNoteMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * 博客笔记菜单Service业务层处理
 *
 * @author tianya
 * @date 2023-04-30
 */
@Service
public class BlogNoteMenuServiceImpl implements IBlogNoteMenuService {
    @Autowired
    private BlogNoteMenuMapper blogNoteMenuMapper;
    @Autowired
    private CacheConfiguration cacheConfiguration;

    /**
     * 查询博客笔记菜单
     *
     * @param menuId 博客笔记菜单主键
     * @return 博客笔记菜单
     */
    @Override
    public BlogNoteMenu selectBlogNoteMenuByMenuId(String menuId) {
        return blogNoteMenuMapper.selectBlogNoteMenuByMenuId(menuId);
    }

    /**
     * 查询博客笔记菜单列表
     *
     * @param blogNoteMenu 博客笔记菜单
     * @return 博客笔记菜单
     */
    @Override
    public List<BlogNoteMenu> selectBlogNoteMenuList(BlogNoteMenu blogNoteMenu) {
        return blogNoteMenuMapper.selectBlogNoteMenuList(blogNoteMenu);
    }

    /**
     * 新增博客笔记菜单
     *
     * @param blogNoteMenu 博客笔记菜单
     * @return 结果
     */
    @Override
    public int insertBlogNoteMenu(BlogNoteMenu blogNoteMenu) {
        int result = blogNoteMenuMapper.insertBlogNoteMenu(blogNoteMenu);
        cacheConfiguration.cacheNoteMenu();
        return result;
    }

    /**
     * 修改博客笔记菜单
     *
     * @param blogNoteMenu 博客笔记菜单
     * @return 结果
     */
    @Override
    public int updateBlogNoteMenu(BlogNoteMenu blogNoteMenu) {
        int result = blogNoteMenuMapper.updateBlogNoteMenu(blogNoteMenu);
        cacheConfiguration.cacheNoteMenu();
        return result;
    }

    /**
     * 批量删除博客笔记菜单
     *
     * @param menuIds 需要删除的博客笔记菜单主键
     * @return 结果
     */
    @Override
    public int deleteBlogNoteMenuByMenuIds(String[] menuIds) {
        return blogNoteMenuMapper.deleteBlogNoteMenuByMenuIds(menuIds);
    }

    /**
     * 删除博客笔记菜单信息
     *
     * @param menuId 博客笔记菜单主键
     * @return 结果
     */
    @Override
    public int deleteBlogNoteMenuByMenuId(String menuId) {
        return blogNoteMenuMapper.deleteBlogNoteMenuByMenuId(menuId);
    }

    /**
     * 查询博客笔记菜单树结构
     *
     * @return 结果
     */
    @Override
    public List<TreeNode> selectMenuTreeList() {
        List<TreeNode> sysAreaList = BlogConstant.menuTreeSelectList;
        List<TreeNode> retList = new ArrayList<>();
        return sysAreaList;
    }
    /**
     * 刷新博客笔记菜单树结构
     *
     * @return 结果
     */
    @Override
    public void refresh(){
        cacheConfiguration.cacheNoteMenu();
    }
}
